#include <bits/stdc++.h>
using namespace std;

// 生成随机数
mt19937 rnd(time(0));

// 生成[l,r]范围内的随机整数
int randInt(int l, int r) {
    return rnd() % (r - l + 1) + l;
}

// 生成所有数字相同的数组
void genSameArray(int n) {
    int val = randInt(-10, 10);
    for(int i = 0; i < n; i++) {
        cout << val << " \n"[i == n-1];
    }
}

// 生成所有数字不同的数组
void genDifferentArray(int n) {
    vector<int> a(n);
    for(int i = 0; i < n; i++) {
        a[i] = i + 1;
    }
    // 随机打乱数组
    shuffle(a.begin(), a.end(), rnd);
    for(int i = 0; i < n; i++) {
        cout << a[i] << " \n"[i == n-1];
    }
}

// 生成普通随机数组
void genRandomArray(int n) {
    for(int i = 0; i < n; i++) {
        cout << randInt(-10, 10) << " \n"[i == n-1];
    }
}

// 生成单个测试数据文件
void genOneTest(int testId, int n, string type, string folder = "data", string ext = "in") {
    string filename = folder + "\\cul" + to_string(testId) + "." + ext;
    freopen(filename.c_str(), "w", stdout);
    
    cout << "1\n"; // 每个文件只包含一组数据
    cout << n << "\n";
    
    if(type == "same") {
        genSameArray(n);
    } else if(type == "different") {
        genDifferentArray(n);
    } else {
        genRandomArray(n);
    }
}

int main() {
    // 生成样例数据
    // 样例1：小数据随机
    genOneTest(1, 5, "random", "sample");
    // 样例2：所有数字相同
    genOneTest(2, 5, "same", "sample");
    // 样例3：大规模数据，所有数字不同
    genOneTest(3, 100000, "random", "sample");
    
    // 生成测试数据
    int testId = 1;
    
    // 测试点1~4: n <= 10
    for(int i = 0; i < 4; i++) {
        int n = randInt(5, 10);
        genOneTest(testId++, n, "random");
    }
    
    // 测试点5,6: n <= 1000, 所有数字相同
    for(int i = 0; i < 2; i++) {
        int n = randInt(900, 1000);
        genOneTest(testId++, n, "same");
    }
    
    // 测试点7,8: n <= 100000, 所有数字相同
    for(int i = 0; i < 2; i++) {
        int n = randInt(90000, 100000);
        genOneTest(testId++, n, "same");
    }
    
    // 测试点9,10: n <= 1000, 所有数字不同
    for(int i = 0; i < 2; i++) {
        int n = randInt(900, 1000);
        genOneTest(testId++, n, "different");
    }
    
    // 测试点11,12: n <= 100000, 所有数字不同
    for(int i = 0; i < 2; i++) {
        int n = randInt(90000, 100000);
        genOneTest(testId++, n, "different");
    }
    
    // 测试点13~16: n <= 1000, 普通随机
    for(int i = 0; i < 4; i++) {
        int n = randInt(900, 1000);
        genOneTest(testId++, n, "random");
    }
    
    // 测试点17~20: n <= 100000, 普通随机
    for(int i = 0; i < 4; i++) {
        int n = randInt(90000, 100000);
        genOneTest(testId++, n, "random");
    }
    
    return 0;
}
